package com.wkg.lotterysystem.dao.mapper;

import com.wkg.lotterysystem.dao.dataobject.WinningRecordDO;
import jakarta.validation.constraints.NotNull;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WinningRecordMapper {
    @Insert({
            "<script>",
            "INSERT INTO winning_record (activity_id, activity_name," +
                    "                           prize_id, prize_name, prize_tier," +
                    "                           winner_id, winner_name, winner_email, winner_phone_number, winning_time) VALUES",
            "<foreach collection='items' item='item' index='index' separator=','>",
            "(#{item.activityId}, #{item.activityName}," +
                    " #{item.prizeId}, #{item.prizeName}, #{item.prizeTier}," +
                    " #{item.winnerId}, #{item.winnerName}, #{item.winnerEmail}, #{item.winnerPhoneNumber}, #{item.winningTime})",
            "</foreach>",
            "</script>"
    })
    @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
    int batchInsert(@Param("items") List<WinningRecordDO> winningRecordDOList);

    @Select("select * from winning_record where activity_id=#{activityId}")
    List<WinningRecordDO> selectByActivityId(@Param("activityId") Integer activityId);

    @Select("select count(1) from  winning_record where activity_id=#{activityId} and prize_id=#{prizeId}")
    int countByAPId(@Param("activityId") Integer activityId, @Param("prizeId") Integer prizeId);

    /**
     * 删除活动或奖品下的中奖记录
     *
     * @param activityId
     * @param prizeId
     */
    @Delete("<script>" +
            " delete from winning_record" +
            " where activity_id=#{activityId}" +
            " <if test=\"prizeId != null\">" +
            " and prize_id=#{prizeId}" +
            " </if>" +
            "</script>")
    void deleteRecords(@Param("activityId") Integer activityId, @Param("prizeId") Integer prizeId);

    @Select(" <script>" +
            " select * from winning_record" +
            " where activity_id=#{activityId}" +
            " <if test=\"prizeId != null\">" +
            " and prize_id=#{prizeId}" +
            " </if>" +
            " </script>")
    List<WinningRecordDO> selectByActivityIdOrPrizedId(@Param("activityId") Integer activityId,
                                                       @Param("prizeId") Integer prizeId);
}


